package com.winsdom.mapper.customer;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.winsdom.entity.customer.CustomerIndividualBasicInfoRequest;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 客户基本信息数据访问接口，提供对客户基础信息表的数据库操作。
 * 继承自MyBatis-Plus的BaseMapper，包含了基本的CRUD方法。
 * 同时提供自定义方法来查询客户基本信息。
 */
@Mapper
@Repository
public interface CustomerIndividualBasicInfoMapper extends BaseMapper<CustomerIndividualBasicInfoRequest> {

    /**
     * 根据客户ID查询客户基本信息，返回以客户ID为键的映射列表。
     *
     * 该方法会将查询结果的每一行转换为一个Map，其中键为列名，值为对应列的值。
     * 整个结果集被封装在一个List中，使用@MapKey注解指定以"customerId"列的值作为Map的键，
     * 确保每个客户的信息可以通过其ID快速访问。
     *
     * @param customerId 客户ID，用于筛选客户基本信息
     * @return 返回一个列表，列表中的每个元素是一个Map，代表一条客户记录。
     *         每个Map以"customerId"的值为键，以包含该行所有列的Map为值。
     *         如果没有找到匹配的记录，返回空列表。
     */
    @MapKey("customerId")
    List<Map<String, Object>> selectCustomerBasicInfo(Long customerId);
}